package com.xnyzc.lhy.mis.service.cms.util;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xnyzc.lhy.mis.entity.param.cms.RoleReceive;

import java.util.List;

/**
 * @Description 获取当前用户可查询的机构
 * @Author zhuyubin
 * @Date 2019-08-21 19:50
 **/
public interface IOaSysGetOfficeIdListService {

    List<RoleReceive> selectOfficeNameList(Long sysUserId);

    /**
     * 获取当前角色可查看部门
     *
     * @param sysUserId 后台用户 id
     * @return
     */
    List<Long> selectOfficeIdList(Long sysUserId);

    /**
     * 根据userId查询可查看的乘客id
     *
     * @param sysUserId 后台用户 id
     * @param type      数据范围
     * @return
     */
    List<Long> selectCUserIdList(Long sysUserId, List<String> type);

    /**
     * 根据userId查询可查看的司机用户id
     *
     * @param sysUserId 后台用户 id
     * @param type      数据范围
     * @return
     */
    List<Long> selectDUserIdList(Long sysUserId, List<String> type);

    /**
     * 根据officeId查询可查看的司机用户id
     *
     * @param officeId 数据范围
     * @return
     */
    List<Long> selectDUserIdList(Long officeId);

    /**
     * 根据userId查询可查看的管理员用户id
     *
     * @param sysUserId 后台用户 id
     * @param type      数据范围
     * @return
     */
    List<Long> selectSysUserIdList(Long sysUserId, List<String> type);

    /**
     * 数据范围过滤 条件
     *
     * @param userId      当前用户对象，通过“UserUtils.getUser()”获取
     * @param officeAlias 机构表别名，例如：dc.createAlias("office", "office");
     * @param userAlias   用户表别名，传递空，忽略此参数
     * @return 标准连接条件对象
     */
    QueryWrapper dataScopeFilter(Long userId, String officeAlias, String userAlias);
}
